The Internet Protocol (“IP”) serves as the de-facto standard for forwarding data messages (“datagrams”) between network devices connected with the Internet. To that end, IP delivers datagrams across a series of Internet devices, such as routers and switches, in the form of one or more data packets. Each packet has two principal parts: (1) a payload with the information being conveyed (e.g., text, graphic, audio, or video data), and (2) a header, known as an “IP header,” having the address of the network device to receive the packet(s) (the “destination device”), the identity of the network device that sent the packet (the “originating device”), and other data for routing the packet. Within the TCP/IP suite of protocols, IP generally operates at the internet layer, which generally corresponds to layer 3 (i.e., the network layer) of the OSI 7-layer model.
There are two commonly-used versions of IP, namely IP version 4 (“IPv4”) and IP version 6 (“IPv6”). IPv4 is described in IETF RFC 791, which is hereby incorporated herein by reference in its entirety. IPv6 is described in IETF RFC 2460, which is hereby incorporated herein by reference in its entirety. The main purpose of both versions is to provide unique global computer addressing to ensure that communicating devices can identify one another. One of the main distinctions between IPv4 and IPv6 is that IPv4 uses 32-bit addresses, whereas IPv6 utilizes 128 bit addresses. In addition, IPv6 can support larger datagram sizes.
IPv4 datagrams have the general header format shown in FIG. 43.
IPv6 datagrams have the general header format shown in FIG. 44.
Many people thus analogize packets to a traditional letter using first class mail, where the letter functions as the payload, and the envelope, with its return and mailing addresses, functions as the IP header.
IP datagrams often encapsulate higher layer protocol messages as part of the IP datagram payload. Two commonly-used higher layer protocols in the TCP/IP protocol suite that are often carried in IP datagrams are the Transmission Control Protocol (TCP) and the User Datagram Protocol (UDP). TCP and UDP messages include a header and a payload in which data from upper protocol layers are carried. Within the TCP/IP suite of protocols, TCP and UDP generally operate at the transport layer, which generally corresponds to layer 4 (i.e., the transport layer) of the OSI 7-layer model.
TCP is described generally in IETF RFC 793, which is hereby incorporated herein by reference in its entirety. The general format of a TCP segment is shown in FIG. 45.
UDP is described generally in IETF RFC 768, which is hereby incorporated herein by reference in its entirety. The general format of a UDP segment is shown in FIG. 46.
Thus, for example, an IP datagram will often include an IP header, a TCP or UDP header, and a payload. The TCP or UDP payload can be used to carry upper layer protocol messages that in turn may include a header and a payload.
Current Internet devices, such as routers and switches, generally forward packets one-by-one based essentially on the address of the destination device in the packet header in accordance with an Internet routing protocol such as BGP, OSPFv2, IS-IS, etc. Among other benefits, this routing scheme enables network devices to forward different packets of a single datagram along different routes to reduce network congestion, or avoid malfunctioning network devices. Those skilled in the art thus refer to IP as a “stateless” or “connectionless” protocol because, among other reasons, it does not save packet path data, and does not pre-arrange transmission of packets between end points.